-- $LastChangedDate: 2007-06-03 12:04:05 +0200 (Sun, 03 Jun 2007) $
-- $LastChangedRevision: 159 $
-- $LastChangedBy: david $

-- package que contiene la definicion del tipo log

-- packages del gimnasio

PACKAGE BODY Tiposprotegidos.Log IS

   PROTECTED BODY Log IS
      -- update procedures
      -- actualiza el contador que se le indica por parametro
      PROCEDURE Add (
            C : IN     Rango_Contadorlog) IS
      BEGIN
         Contador(C) := Contador(C) + 1;
      END Add;

      PROCEDURE Dec (
            C : IN     Rango_Contadorlog) IS
      BEGIN
         Contador(C) := Contador(C) - 1;
      END Dec;

      -- read function
      -- lee el contador que se le indica por parametro
      FUNCTION Read (
            C : IN     Rango_Contadorlog)
        RETURN Natural IS
      BEGIN
         RETURN Contador(C);
      END Read;
   END Log;

   -- variable de log
   Gym_Log : Log;

   -- funciones de manejo del log
   PROCEDURE Log_Add (
         C : IN     Rango_Contadorlog) IS
   BEGIN
      Gym_Log.Add(C);
   END Log_Add;

   PROCEDURE Log_Dec (
         C : IN     Rango_Contadorlog) IS
   BEGIN
      Gym_Log.Dec(C);
   END Log_Dec;

   FUNCTION Log_Read (
         C : IN     Rango_Contadorlog)
     RETURN Natural IS
   BEGIN
      RETURN Gym_Log.Read(C);
   END Log_Read;

   FUNCTION "&" (
         Left  : String;
         Right : Rango_Contadorlog)
     RETURN String IS
   BEGIN
      CASE Right IS
         WHEN Cliente_Cantidad =>
            RETURN Left & "Numero de Clientes";
         WHEN Cliente_Entrevistado =>
            RETURN Left & "Clientes Entrevistados";
         WHEN Cliente_Emergencia =>
            RETURN Left & "Clientes con Emergencia";
         WHEN Cliente_Vete_A_Casa =>
            RETURN Left & "Clientes idos a Casa";
         WHEN Cliente_Entreno_Completo =>
            RETURN Left & "Clientes Entreno Completo";
         WHEN Cliente_Muerto =>
            RETURN Left & "Clientes Muertos";
         WHEN Ejercicios_Asignados =>
            RETURN Left & "Ejercicios Asignados";
         WHEN Monitor_Cantidad =>
            RETURN Left & "Numero de Monitores";
         WHEN Monitor_Interrumpido =>
            RETURN Left & "Monitores Interrumpidos";
         WHEN Monitor_Libre =>
            RETURN Left & "Monitores Libres";
         WHEN Aparato_Cantidad =>
            RETURN Left & "Numero de Aparatos";
         WHEN Aparato_Libre =>
            RETURN Left & "Aparatos Libres";
         WHEN Medico_Cantidad =>
            RETURN Left & "Numero de Medicos";
         WHEN Medico_Libre =>
            RETURN Left & "Medicos Libres";
      END CASE;
   END "&";

END Tiposprotegidos.Log;
